Skip to content

Rig Bridge — Pre-release polish#884

Merged
alanhargreaves merged 14 commits intoaccius:Stagingfrom
ceotjoe:rig-pre-release
Apr 6, 2026
Merged

Rig Bridge — Pre-release polish#884
alanhargreaves merged 14 commits intoaccius:Stagingfrom
ceotjoe:rig-pre-release

Conversation

@ceotjoe
Copy link
Copy Markdown
Collaborator

@ceotjoe ceotjoe commented Apr 6, 2026

Rig Bridge — Pre-release polish

This PR prepares the Rig Bridge integration for first public release.


What's included

Install & update experience

  • --update flag added to the generated Mac/Linux and Windows installer
    scripts — safely stops any running instance, re-clones to a staging
    directory, preserves the existing config file, then swaps in the new
    installation. Works on all three platforms with git as the only extra
    prerequisite.
  • Launcher scripts (start-rig-bridge.sh / start-rig-bridge.bat)
    now read package.json for the version number and the config file for
    port + TLS settings, so they print and open the actual setup UI URL
    instead of the hardcoded http://localhost:5555.
  • Generated install scripts (/api/rig-bridge/install-script) apply the
    same dynamic URL logic so the post-install banner shows the correct address.

README (rig-bridge/README.md)

  • Option A rewritten to describe the download journey from the OHC
    Settings UI, with per-OS shell instructions for running the script.
  • "Updating Rig Bridge" section added, showing the --update usage for
    each OS.
  • Maturity column added to the Digital Mode table; section headers for
    APRS and Rotator carry _(Beta)_ / _(Alpha)_ labels; Cloud Relay scenario
    header carries _(Cloud Relay: Alpha)_.
  • Glossary section added (item 11) defining Alpha and Beta in the context
    of this project.

Rig Bridge setup UI (rig-bridge/core/server.js)

  • API token is now shown in the header when logged in — masked by
    default with Show/Hide and Copy buttons. Row is centred and stable-width
    so it does not reflow when toggling visibility.
  • Alpha/Beta maturity badges added to plugin cards: WSJT-X and APRS TNC
    are Beta (cyan); MSHV, JTDX, JS8Call, Rotator, Winlink, and Cloud Relay
    are Alpha (amber).
  • "Setup in OpenHamClock" instructions box replaced with a single link to
    Quick Start Option A in the README.

OHC Settings UI (src/components/SettingsPanel.jsx)

  • README banner added as the first element of the Rig Bridge settings tab
    (amber, always visible) — prompts users to read the README before setup.
  • Alpha badge added inline next to the Cloud Relay section header.

i18n (src/lang/*.json)

  • 5 new translation keys added across all 15 active locales:
    station.settings.rigBridge.alpha,
    station.settings.rigBridge.cloudRelay.title,
    station.settings.rigBridge.readme.body,
    station.settings.rigBridge.readme.heading,
    station.settings.rigBridge.readme.link.

Testing checklist

  • Mac: download script from OHC Settings UI, run with bash, verify
    setup UI opens at correct URL
  • Windows: download .bat, run from CMD, verify setup UI opens
  • Run --update on an existing install; confirm config survives
  • Log in to rig-bridge setup UI — token appears in header, Copy works,
    Show/Hide does not shift layout
  • Alpha/Beta badges visible on plugin cards (WSJT-X = Beta, JTDX = Alpha, …)
  • OHC Settings → Rig Bridge tab: amber README banner visible in all 15
    locales; Cloud Relay heading carries Alpha badge
  • Start launcher script on Mac/Linux with a non-default port in config —
    confirm printed URL and opened browser tab match

🤖 Generated with Claude Code

ceotjoe and others added 14 commits April 6, 2026 10:23
- Windows .bat and macOS/Linux .sh installers now accept --update:
  stops any running instance (port 5555), re-clones into a staging dir,
  preserves rig-bridge-config.json, re-installs deps, restarts
- Explicit git availability check added to all scripts
- Safe staging-dir approach: old files only deleted after successful clone
- Option A in Getting Started rewritten to reflect the Settings UI
  download journey with per-OS shell instructions
- New "Updating Rig Bridge" section added to README with per-OS update
  commands, notes on Command Prompt requirement on Windows, and a clear
  description of what is and isn't preserved across updates
- Contents list renumbered accordingly

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- Prominent amber banner added to the top of the Rig Bridge settings
  tab (always visible) linking to the rig-bridge README on the main
  branch and asking users to read it carefully before setup
- Cloud Relay section header now carries an inline Alpha badge
  (amber border/text, uppercase) to signal pre-release status
- 5 new i18n keys under station.settings.rigBridge.* namespace added
  to all 15 active locale files with proper native-language translations
  (fr, de, es, ca, it, nl, pt, ru, ja, ko, ka, ms, sl, th)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- PLUGIN_DEFS entries gain a maturity field: alpha for MSHV, JTDX,
  JS8Call, Rotator, Winlink, Cloud Relay; beta for APRS TNC
- maturityBadge() helper renders an inline colored badge span
  (amber #f59e0b for Alpha, cyan #06b6d4 for Beta) consistent with
  the OHC settings UI accent colors
- WSJT-X tab button gets an inline Beta badge matching the same style
- renderPlugins() calls maturityBadge(plugin.maturity) in the card header

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Adds a masked API Token field (with Show/Copy buttons) to the header's
logoutArea, which is only visible when the user is authenticated.
setLoggedIn() now populates the field and resets it to masked on each
login. Toggling Show/Hide updates the button label accordingly.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Replace fixed 160px width with flex:1 so the token input stretches
to fill available space and the full 32-char hex token is visible.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Wrap the token row in an inline-flex pill (dark background, border,
rounded) so label/input/buttons sit tight together and the whole
group is centred. Use width:22ch on the input (exact fit for the
32-char hex token with masking dots) instead of flex:1 which was
pushing the buttons to the far edge.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
ch units are recalculated when input type switches between password
and text, causing the row to change width. Replace 22ch with a fixed
220px — sized to fit the revealed 32-char hex token at 11px monospace.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- Set white-space:nowrap on the pill container so it never wraps
- Explicit font stack 'Courier New',Courier,monospace to ensure
  consistent character width across platforms
- Width 260px (fits 32 chars of Courier New at 11px in both masked
  and revealed states)
- letter-spacing:0.5px for consistent glyph spacing

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
The hardcoded step-by-step OpenHamClock setup box now links directly
to the Option A anchor in rig-bridge/README.md on the main branch
instead of duplicating instructions that are already maintained there.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Both start-rig-bridge.sh and start-rig-bridge.bat now read:
- Version from package.json via node -e
- Port and tls.enabled from the config file
  (primary: ~/.config/openhamclock/ or %APPDATA%\openhamclock\,
   fallback: legacy install directory)

The browser open call also uses the dynamic URL so HTTPS users
get opened to the right address. Both fall back to
http://localhost:5555 if no config exists yet.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- Maturity column added to Digital Mode Software table:
  WSJT-X → Beta, JTDX / MSHV / JS8Call → Alpha
- APRS via Local TNC section marked Beta
- Antenna Rotator section marked Alpha
- Scenario C (Cloud Relay) marked Alpha
- New Glossary section defines Alpha and Beta with the project's
  own definitions; notes that USB/flrig/rigctld/TCI/SmartSDR are
  considered stable
- Contents list updated (Glossary added as item 11, Advanced Topics 12)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Both generated installer scripts now read port and tls.enabled from
the existing config before printing the setup URL, so users with a
non-default port or HTTPS enabled see the correct address.

Windows: PowerShell reads %APPDATA%\openhamclock\rig-bridge-config.json
(falls back to legacy %USERPROFILE%\openhamclock-rig-bridge location).

macOS/Linux: node reads ~/.config/openhamclock/rig-bridge-config.json
(falls back to ~/openhamclock-rig-bridge). Config path passed via env
var to avoid shell quoting issues inside the node -e expression.

Both fall back to http://localhost:5555 if no config exists yet.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
@ceotjoe ceotjoe requested a review from alanhargreaves April 6, 2026 09:46
Copy link
Copy Markdown
Collaborator

@alanhargreaves alanhargreaves left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

One thing I'm noticing in the rig bridge page is that when I show the key, it's almost as if it's adding a newline on the end in the display as it shifts it up half a line and everything below it down half a line. On checking my token in the local storage there does not appear to be a newline on it.

ceotjoe - DO1HOZ [FO76], — 10:06 pm
Yes this does not look nice, I also recognized that. I fiddled around some time with it and then I left it like this for the moment. Probably I get back to this later.

OK as long as you were aware of it

That's a nice touch linking to github for install instructions

One thing I'd consider, but not block this on, is using ALPHA and BETA constants for instead of 'alpha' and 'beta' strings for the plugin maturity as it helps catch typos going forward. It would also simplify maturityBadge() too.

There are a number of things that markdown lint is not happy about in the README.md, but yours is not the only one guilty of that, so not a stopper (in fact I might log an issue to clean up all the markdown in a bit)

I'd like to see the download scripts taken out of strings and be actual files, and in the shell scripts there are a couple of things which tickle pet peeves (as shell scripting has been kinda my thing for a few decades), but again not a stopper.

@alanhargreaves alanhargreaves merged commit 8e747e9 into accius:Staging Apr 6, 2026
4 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants